﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//给你二叉树的根节点 root ，返回它节点值的 前序 遍历。
//
//
//
//示例 1：
//
//
//输入：root = [1, null, 2, 3]
//输出：[1, 2, 3]


 
  struct TreeNode {
      int val;
      struct TreeNode *left;
      struct TreeNode *right;
  };
 

void preorder(struct TreeNode* root, int* res, int* resSize) {
    if (root == NULL)
    {
        return;
    }
    res[(*resSize)++] = root->val;
    preorder(root->left, res, resSize);
    preorder(root->right, res, resSize);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    int* res = (int*)malloc(sizeof(int) * 2000);
    *returnSize = 0;
    preorder(root, res, returnSize);
    return res;
}

//如果二叉树每个节点都具有相同的值，那么该二叉树就是单值二叉树。
//
//只有给定的树是单值二叉树时，才返回 true；否则返回 false。
//示例 1：
//输入：[1, 1, 1, 1, 1, null, 1]
//输出：true



  struct TreeNode {
      int val;
      struct TreeNode *left;
      struct TreeNode *right;
  };
 


bool isUnivalTree(struct TreeNode* root) {
    if (root == NULL)
    {
        return true;
    }
    if (root->left && root->val != root->left->val)
    {
        return false;          //递归里面的返回，不是整体的返回
    }
    if (root->right && root->val != root->right->val)
    {
        return false;          //递归里面的返回，不是整体的返回
    }
    return isUnivalTree(root->left) && isUnivalTree(root->right);


}
